<?php

include 'TurmaController.php';

class FrequenciaController extends Controller
{
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column2';

	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
				'accessControl', // perform access control for CRUD operations
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules()
	{
		return array(
				array('allow',  // allow all users to perform 'index' and 'view' actions
						'actions'=>array('index','view'),
						'users'=>array('@'),
				),
				array('allow', // allow authenticated user to perform 'create' and 'update' actions
						'actions'=>array('create','update'),
						'users'=>array('@'),
				),
				array('allow', // allow admin user to perform 'admin' and 'delete' actions
						'actions'=>array('admin','delete'),
						'users'=>array('@'),
				),
				array('deny',  // deny all users
						'users'=>array('*'),
				),
		);
	}

	/**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
	public function actionView($id)
	{
		$this->render('view',array(
				'model'=>$this->loadModel($id),
		));
	}

	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionCreate()
	{
		$model=new Frequencia;

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Frequencia']))
		{
			$model->attributes=$_POST['Frequencia'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->id));
		}

		$this->render('create',array(
				'model'=>$model,
		));
	}

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */
	public function actionUpdate($id)
	{
		$model=$this->loadModel($id);

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Frequencia']))
		{
			$model->attributes=$_POST['Frequencia'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->id));
		}

		$this->render('update',array(
				'model'=>$model,
		));
	}

	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	public function actionDelete($id)
	{
		if(Yii::app()->request->isPostRequest)
		{
			// we only allow deletion via POST request
			$this->loadModel($id)->delete();

			// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
			if(!isset($_GET['ajax']))
				$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
		}
		else
			throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
	}

	/**
	 * Lists all models.
	 */
	public function actionIndex($id)
	{
		$turma = TurmaController::loadModel($id);
		$frequencia = new Frequencia;
		$frequencia->data = date('m');
		$frequencia->resposta = date('Y');
		
		if(isset($_POST['Frequencia'])) {
			$freq = new Frequencia;
			$freq->attributes = $_POST['Frequencia'];
			$frequencia = $freq;	
		}

		$this->render('index',array(
				'turma'=>$turma,
				'model' => $frequencia,
		));
	}

	/**
	 * Manages all models.
	 */
	public function actionAdmin()
	{
		$model=new Frequencia('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Frequencia']))
			$model->attributes=$_GET['Frequencia'];

		$this->render('admin',array(
				'model'=>$model,
		));
	}

	/**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer the ID of the model to be loaded
	 */
	public function loadModel($id)
	{
		$model=Frequencia::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param CModel the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='frequencia-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
	
	

	public function createTable($model, $parametro, $form) {
		$data = FrequenciaController::getFrequenciaDatas($model, $parametro);
		$item = new Frequencia;
		$position = 0;
		echo '<Table style="padding:5px; border: 1px solid #bbbbbb;">';
		echo '<TR style="padding:5px; border: 1px solid #bbbbbb;"><TD style="padding:5px; border: 1px solid #bbbbbb;"><h4>'.Aluno::getModuleName().'s</h4></TD>';
		foreach($data as $dat) {
			
			echo '<TD style="padding:5px; border: 1px solid #bbbbbb;">'.date('d',strtotime($dat)).'</TD>';
		}
		echo '</TR>';
		foreach($model->turmaHasAlunos as $aluno) {
			//space for all frequences
			$background = '#000000';
			$adicional = '';
			if($aluno->status != 'Ativo' && Yii::app() -> session['polo_id'] == 1) {
				$background= '#888888';
				$adicional = ' ('.$aluno->status.')';
			}
			echo '<TR style="padding:5px; border: 1px solid #bbbbbb;">';
			echo '<TD style="padding:5px; border: 1px solid #bbbbbb; color:'.$background.'">';
			echo $aluno->aluno->pessoa->nome.$adicional;
			echo '</TD>';
			foreach($data as $dat) {
				$contains = false;
				if($aluno->frequencias != null) {
					foreach($aluno->frequencias as $freq) {
						if($freq->data == $dat) {
							echo '<TD style="padding:5px; border: 1px solid #bbbbbb; width:20px;">';
							if($freq->resposta == "Sim") {
								echo CHtml::image(Yii::app()->request->baseUrl.'/css/presente.jpg',"foto",array('width'=>15, 'height'=>15));
							} else {
								echo CHtml::image(Yii::app()->request->baseUrl.'/css/ausente.jpg',"foto",array('width'=>15, 'height'=>15));
							}
							echo '</TD>';
							$contains = true;
							break;
						}
					}
				}
				if(!$contains) {
					echo '<TD>';
					echo '</TD>';
				}
			}
			echo '</TR>';
		}
		echo "</Table>";
	}


	public static function getFrequenciaDatas($model, $parametro = null) {
		$datas = array();
		$model->turmaHasAlunos = TurmaHasAluno::model()->findAllByAttributes(array('turma_int' => $model->id));
		foreach($model->turmaHasAlunos as $tuAluno) {
			if($tuAluno->frequencias != null) {
				foreach($tuAluno->frequencias as $frequencia) {
					$condicao = true;
					$mes_frequencia = date('m',strtotime($frequencia->data));
					$ano_frequencia = date('Y',strtotime($frequencia->data));
					if($parametro != null) {
						$condicao = $mes_frequencia == $parametro->data && $ano_frequencia == $parametro->resposta;
					}
					
					if(!in_array($frequencia->data, $datas) && $condicao) {
						$datas[] = $frequencia->data;
					}
				}
			}
		}
		return $datas;
	}
}
